package com.heima.android_h5_demo;

import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.Toast;

import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class JavaAndJsCallActivity
        extends Activity
{

    @Bind(R.id.et_number)
    EditText mEtNumber;
    @Bind(R.id.et_password)
    EditText mEtPassword;
    private WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_java_and_js_call);
        ButterKnife.bind(this);

        //使用WebView加载网页,初始化Webview
        initWebView();

    }

    @OnClick(R.id.btn_login)
    public void onClick() {
        String num = mEtNumber.getText()
                              .toString()
                              .trim();
        String pwd = mEtPassword.getText()
                                .toString()
                                .trim();

        if (TextUtils.isEmpty(num) || TextUtils.isEmpty(pwd)) {
            Toast.makeText(this, "请输入完整的用户名和密码", Toast.LENGTH_SHORT)
                 .show();
            return;
        }

        login(num);

    }

    private void login(String num) {
        //通过Android调用js的代码 格式: javascript:需要调用js方法名(需要传递的参数(可选))
        //注意参数需要用''进行包裹
        mWebView.loadUrl("javascript:javaCallJs(" + "'" + num + "'" + ")");
        setContentView(mWebView);
    }

    private void initWebView() {
        mWebView = new WebView(this);
        //获取设置Setting对象
        WebSettings settings = mWebView.getSettings();
        //设置WebView可以加载网页,执行js语言
        settings.setJavaScriptEnabled(true);
        //设置支持自适应ViewPort
        settings.setUseWideViewPort(true);
        //设置支持缩放
        settings.setBuiltInZoomControls(true);
        //设置h5加载的内容在我们自己的webview客户端中
        mWebView.setWebViewClient(new WebViewClient());

        //为了实现javascript能够调用Android本地的代码需要添加一个js和安卓通信的桥梁类
        //第二个参数是在我们的js调用android本地代码是识别的一个标记
        mWebView.addJavascriptInterface(new AndroidAndJsInterface(),"Android");

        //通过网络url加载页面
        //        webView.loadUrl("http://www.atguigu.com/");
        //提前加载本地assets目录下的h5界面,注意格式
        mWebView.loadUrl("file:///android_asset/JavaAndJavaScriptCall.html");
        //        setContentView(webView);
    }

    //自定义javascript和android通信的桥梁类
    private class AndroidAndJsInterface{

        //要想js能够成功调用android本地方法,必须添加一个注解
       @JavascriptInterface
        public void showToast(){
            Toast.makeText(getApplicationContext(),"js调用Android本地的代码成功", Toast.LENGTH_SHORT).show();
        }
    }
}
